package com.fantastic.anno;

import java.lang.annotation.*;
import java.util.concurrent.TimeUnit;

/**
 * @author : fantastic
 * @date : 2024/5/11 17:47
 * @desc : this class for xxxxx
 **/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RedisDynamicLock {
    /**
     * 锁名称
     */
    String lockName() default "";

    /**
     * redis锁 key名称 支持spel表达式
     */
    String key() default "";

    /**
     * 校验的参数 支持spel表达式（特殊的校验逻辑）
     * key=name valeu=spel
     */
    VerifyProperties[] verifyProperties() default {};

    /**
     * redis锁 过期时间，默认为5秒
     */
    int expire() default 5000;

    /**
     *获取自旋锁失败时等待超时时间
     *
     */
    int waitTime() default 5000;

    /**
     * 超时时间单位
     *
     * @return 默认 毫秒
     */
    TimeUnit timeUnit() default TimeUnit.MILLISECONDS;
}
